1
|
8 |
|
import { Controller, Post, Param } from '@nestjs/common'; |
2
|
8 |
|
import { TokensService } from './tokens.service'; |
3
|
8 |
|
import { TokenResponseDto } from './dto/token-response.dto/token-response.dto'; |
4
|
8 |
|
import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'; |
5
|
|
|
|
6
|
|
|
@ApiTags('Tokens') |
7
|
|
|
@Controller({ path: 'tokens', version: '2' }) // Version 2 |
8
|
8 |
|
export class TokensV2Controller { |
9
|
6 |
|
constructor(private readonly tokensService: TokensService) {} |
10
|
|
|
|
11
|
|
|
@Post(':id/consume') |
12
|
|
|
@ApiOperation({ |
13
|
|
|
summary: 'Consume a token (v2)', |
14
|
|
|
description: 'Consumes a token and provides an insight quote from a single person.', |
15
|
|
|
}) |
16
|
|
|
@ApiResponse({ |
17
|
|
|
status: 201, |
18
|
|
|
description: 'Token consumed successfully', |
19
|
|
|
type: TokenResponseDto, |
20
|
|
|
}) |
21
|
|
|
@ApiResponse({ |
22
|
|
|
status: 400, |
23
|
|
|
description: 'Bad Request - Token not found or already expired', |
24
|
|
|
}) |
25
|
|
|
@ApiResponse({ |
26
|
|
|
status: 403, |
27
|
|
|
description: 'Forbidden - Token has no remaining uses', |
28
|
|
|
}) |
29
|
8 |
|
async consume(@Param('id') id: string): Promise<TokenResponseDto> { |
30
|
1 |
|
const token = await this.tokensService.consume(id); |
31
|
|
|
|
32
|
1 |
|
const rooseveltQuotes = [ |
33
|
|
|
"Believe you can and you're halfway there.", |
34
|
|
|
'Do what you can, with what you have, where you are.', |
35
|
|
|
'It is hard to fail, but it is worse never to have tried to succeed.', |
36
|
|
|
'Keep your eyes on the stars, and your feet on the ground.', |
37
|
|
|
'In any moment of decision, the best thing you can do is the right thing.', |
38
|
|
|
'The only man who never makes mistakes is the man who never does anything.', |
39
|
|
|
'Courage is not having the strength to go on; it is going on when you don’t have the strength.', |
40
|
|
|
'Far better it is to dare mighty things than to rank with those timid souls who neither enjoy much nor suffer much.', |
41
|
|
|
'People don’t care how much you know until they know how much you care.', |
42
|
|
|
'Do what you can, with what you’ve got, where you are.', |
43
|
|
|
]; |
44
|
|
|
|
45
|
1 |
|
const randomQuote = rooseveltQuotes[Math.floor(Math.random() * rooseveltQuotes.length)]; |
46
|
|
|
|
47
|
1 |
|
return { |
48
|
|
|
token: token.id, |
49
|
|
|
remainingUses: token.remainingUses, |
50
|
|
|
expiresAt: token.expiresAt, |
51
|
|
|
message: `This is a v2 response: Here's a quote from Theodore Roosevelt: "${randomQuote}"`, |
52
|
|
|
}; |
53
|
|
|
} |
54
|
|
|
} |
55
|
|
|
|